KDE Frameworks 5
   HOME

TheInfoList



OR:

KDE Frameworks is a collection of
libraries A library is a collection of materials, books or media that are accessible for use and not just for display purposes. A library provides physical (hard copies) or digital access (soft copies) materials, and may be a physical location or a vir ...
and
software framework In computer programming, a software framework is an abstraction in which software, providing generic functionality, can be selectively changed by additional user-written code, thus providing application-specific software. It provides a standard ...
s readily available to any Qt-based software stacks or applications on multiple
operating system An operating system (OS) is system software that manages computer hardware, software resources, and provides common services for computer programs. Time-sharing operating systems schedule tasks for efficient use of the system and may also in ...
s. Featuring frequently needed functionality solutions like hardware integration, file format support, additional graphical control elements, plotting functions, and
spell checking In software, a spell checker (or spelling checker or spell check) is a software feature that checks for misspellings in a text file, text. Spell-checking features are often embedded in software or services, such as a word processor, email client, el ...
, the collection serves as technological foundation for
KDE Plasma 5 KDE Plasma 5 is the fifth and current generation of the graphical workspaces environment created by KDE primarily for Linux systems. KDE Plasma 5 is the successor of KDE Plasma 4 and was first released on 15 July 2014. It includes a new default ...
and
KDE Gear The KDE Gear (also known as the KDE Applications Bundle or KDE Applications) is a set of applications and supporting libraries that are developed by the KDE community, primarily used on Linux-based operating systems but mostly multiplatform, and ...
distributed under the
GNU Lesser General Public License The GNU Lesser General Public License (LGPL) is a free-software license published by the Free Software Foundation (FSF). The license allows developers and companies to use and integrate a software component released under the LGPL into their own ...
(LGPL).


Overview

Current KDE Frameworks are based on Qt 5, which enables a more widespread use of
QML QML (Qt Modeling Language) is a user interface markup language. It is a declarative language (similar to CSS and JSON) for designing user interface–centric applications. Inline JavaScript code handles imperative aspects. It is associated wi ...
, a simpler
JavaScript JavaScript (), often abbreviated as JS, is a programming language that is one of the core technologies of the World Wide Web, alongside HTML and CSS. As of 2022, 98% of Website, websites use JavaScript on the Client (computing), client side ...
-based declarative programming language, for the design of user interfaces. The graphics rendering engine used by QML allows for more fluid user interfaces across different devices. Since the split of the
KDE Software Compilation The KDE Software Compilation (KDE SC) was an umbrella term for the desktop environment plus a range of included applications produced by KDE. From its 1.0 release in July 1998 until the release of version 4.4 in February 2010, the Software Comp ...
into KDE Frameworks 5,
KDE Plasma 5 KDE Plasma 5 is the fifth and current generation of the graphical workspaces environment created by KDE primarily for Linux systems. KDE Plasma 5 is the successor of KDE Plasma 4 and was first released on 15 July 2014. It includes a new default ...
and
KDE Applications The KDE Gear (also known as the KDE Applications Bundle or KDE Applications) is a set of applications and supporting libraries that are developed by the KDE community, primarily used on Linux-based operating systems but mostly multiplatform, and ...
, each sub-project can pick its own development pace. KDE Frameworks are released on a monthly basis and use git. It should be possible to install KDE Frameworks alongside the KDE Platform 4 so apps can use either one.


API and ABI stability

Platform releases are those which begin a series (version number X.0). Only these major releases are allowed to break
binary compatibility Binary-code compatibility (binary compatible or object-code-compatible) is a property of a computer system, meaning that it can run the same executable code, typically machine code for a general-purpose computer CPU, that another computer syste ...
with the predecessor. Releases in the minor series (X.1, X.2, ...) will guarantee binary portability (
API An application programming interface (API) is a way for two or more computer programs to communicate with each other. It is a type of software interface, offering a service to other pieces of software. A document or standard that describes how ...
& ABI). This means, for instance, that software that was developed for KDE 3.0 will work on all (future) KDE 3 releases; however, an application developed for KDE 2 is not guaranteed to be able to make use of the KDE 3 libraries. KDE major version numbers mainly follow the Qt release cycle, meaning that KDE SC 4 is based on Qt 4, while KDE 3 was based on Qt 3.


Supported operating systems

The repository of each framework should contain a file named ''metainfo.yaml''. This file documents the maintainer of the framework, the type, the supported operating system and other information. The currently supported platforms are Linux, Microsoft Windows, macOS and Android.


Software architecture


Structure

The Frameworks have a clear dependency structure, divided into "categories" and "tiers". The "categories" refer to runtime dependencies: * Functional elements have no runtime dependencies. * Integration designates code that may require runtime dependencies for integration depending on what the OS or platform offers. * Solutions have mandatory runtime dependencies.


Components

The KDE Frameworks bundle consists of over 70 packages. These existed as a single large package, called kdelibs, in KDE SC 4. Kdelibs was split into several individual frameworks, some of which are no longer part of KDE but were integrated into Qt 5.2. KDE Frameworks are grouped in four different tiers according to dependency on other libraries. ; Tiers of Frameworks: :Tier 1 - Mostly depend only on Qt, highly portable :Tier 2 - Depends on Tier 1, but dependencies are still manageable. :Tier 3 - Complex dependencies, including Tiers 1-2 etc. :Tier 4 - Mostly plugins that provide additional features like platform support can be ignored.


Kirigami

Kirigami is a
QML QML (Qt Modeling Language) is a user interface markup language. It is a declarative language (similar to CSS and JSON) for designing user interface–centric applications. Inline JavaScript code handles imperative aspects. It is associated wi ...
application framework developed by Marco Martin that enables developers to write applications that run natively on Android, iOS, Windows, Plasma Mobile and any classic Linux desktop environment without code adjustments. It is used by various applications, for example
Linus Torvalds Linus Benedict Torvalds ( , ; born 28 December 1969) is a Finnish software engineer who is the creator and, historically, the lead developer of the Linux kernel, used by Linux distributions and other operating systems such as Android. He also ...
and Dirk Hohndels' scuba diving application Subsurface, the messenger client Banji, the Kaidan messenger, Vvave music player and the KDE software center Discover.


Software packages

Linux distribution use some
package management system A package manager or package-management system is a collection of software tools that automates the process of installing, upgrading, configuring, and removing computer programs for a computer in a consistent manner. A package manager deals w ...
to package the software they distribute. Debian for example distributes ''KGlobalAccel'' under the package name ''libkf5globalaccel'', while
Fedora Linux Fedora Linux is a Linux distribution developed by the Fedora Project. Fedora contains software distributed under various free and open-source licenses and aims to be on the leading edge of open-source technologies. Fedora is the upstream source ...
distributes it under the name ''kf5-kglobalaccel''.


Bindings

While being mainly written in C++, there are many bindings for other programming languages available: * Python * Ruby (
Korundum QtRuby is a binding of the application framework Qt for Ruby. Korundum is an additional set of bindings for KDE which extend QtRuby. QtRuby is cross-platform, as all the underlying technologies are platform agnostic. QtRuby hello world r ...
, built on top of
QtRuby QtRuby is a binding of the application framework Qt for Ruby. Korundum is an additional set of bindings for KDE which extend QtRuby. QtRuby is cross-platform, as all the underlying technologies are platform agnostic. QtRuby hello world re ...
) * Perl * C# (however, the current framework for binding to C# and other .NET languages has been deprecated, and the replacement only compiles on Windows). These and other bindings use the following technologies: * Smoke: for creating bindings for
Ruby A ruby is a pinkish red to blood-red colored gemstone, a variety of the mineral corundum ( aluminium oxide). Ruby is one of the most popular traditional jewelry gems and is very durable. Other varieties of gem-quality corundum are called sa ...
, C# and
PHP PHP is a general-purpose scripting language geared toward web development. It was originally created by Danish-Canadian programmer Rasmus Lerdorf in 1993 and released in 1995. The PHP reference implementation is now produced by The PHP Group. ...
* SIP: for creating bindings for
Python Python may refer to: Snakes * Pythonidae, a family of nonvenomous snakes found in Africa, Asia, and Australia ** ''Python'' (genus), a genus of Pythonidae found in Africa and Asia * Python (mythology), a mythical serpent Computing * Python (pro ...
* Kross: Embedded scripting for
C++ C++ (pronounced "C plus plus") is a high-level general-purpose programming language created by Danish computer scientist Bjarne Stroustrup as an extension of the C programming language, or "C with Classes". The language has expanded significan ...
applications, with support for Ruby,
Python Python may refer to: Snakes * Pythonidae, a family of nonvenomous snakes found in Africa, Asia, and Australia ** ''Python'' (genus), a genus of Pythonidae found in Africa and Asia * Python (mythology), a mythical serpent Computing * Python (pro ...
,
JavaScript JavaScript (), often abbreviated as JS, is a programming language that is one of the core technologies of the World Wide Web, alongside HTML and CSS. As of 2022, 98% of Website, websites use JavaScript on the Client (computing), client side ...
,
QtScript QtScript is a scripting engine that has been part of the Qt (framework), Qt cross-platform application framework since version 4.3.0. The scripting language is based on the ECMAScript standard with a few extensions, such as QObject-style signal a ...
, Falcon and
Java Java (; id, Jawa, ; jv, ꦗꦮ; su, ) is one of the Greater Sunda Islands in Indonesia. It is bordered by the Indian Ocean to the south and the Java Sea to the north. With a population of 151.6 million people, Java is the world's List ...
Many bindings weren't updated to Qt5 and KF5 or only later in the release cycle.


History

The 5.0 release was preceded by a technology preview, two alpha releases, and three beta releases. The source code of KDE Frameworks has been around since KDElibs 1. The first release as ''KDE Frameworks'' was with version 5, to account for the fact that the code base was that of KDE Platform version 4 (the only major version of
KDE Platform KDE Platform 4 was a collection of libraries and software frameworks by KDE that served as technological foundation for KDE Software Compilation 4 distributed under the GNU Lesser General Public License (LGPL). KDE Platform 4 was the successor to ...
). The transition from
KDE Platform KDE Platform 4 was a collection of libraries and software frameworks by KDE that served as technological foundation for KDE Software Compilation 4 distributed under the GNU Lesser General Public License (LGPL). KDE Platform 4 was the successor to ...
to KDE Frameworks began in August 2013, guided by top KDE technical contributors. After the initial release of KDE Frameworks 5.0, the developers focused on adding new features to the components in KDE Frameworks 5, an example being better integration of
Firefox Mozilla Firefox, or simply Firefox, is a free and open-source web browser developed by the Mozilla Foundation and its subsidiary, the Mozilla Corporation. It uses the Gecko rendering engine to display web pages, which implements current ...
into KDE. The major improvement of Frameworks 5 is its modularization. In earlier KDE versions, the libraries were bundled as a single large package. In Frameworks, the libraries were split into individual smaller packages. This facilitates utilization of the libraries by other Qt-based software, since dependencies can be kept at a minimum. While KDE 4 was based on version 4 of the Qt widget toolkit, Frameworks 5 is based on version 5.


KDE4 transformation

During KDE SC 4, the then so called
KDE Platform KDE Platform 4 was a collection of libraries and software frameworks by KDE that served as technological foundation for KDE Software Compilation 4 distributed under the GNU Lesser General Public License (LGPL). KDE Platform 4 was the successor to ...
consisted of all libraries and services needed for KDE Plasma and the applications. Starting with Qt 5, this platform was transformed into a set of modules that is now referred to as KDE Frameworks. These modules include:
Solid Solid is one of the State of matter#Four fundamental states, four fundamental states of matter (the others being liquid, gas, and Plasma (physics), plasma). The molecules in a solid are closely packed together and contain the least amount o ...
,
Nepomuk Nepomuk (; german: Pomuk) is a town in Plzeň-South District in the Plzeň Region of the Czech Republic. It has about 3,700 inhabitants. It is known as the birthplace of Saint John of Nepomuk, who was born here around 1340 and whose statue can b ...
,
Phonon In physics, a phonon is a collective excitation in a periodic, Elasticity (physics), elastic arrangement of atoms or molecules in condensed matter physics, condensed matter, specifically in solids and some liquids. A type of quasiparticle, a phon ...
, etc. and are licensed either under the LGPL, BSD license,
MIT License The MIT License is a permissive free software license originating at the Massachusetts Institute of Technology (MIT) in the late 1980s. As a permissive license, it puts only very limited restriction on reuse and has, therefore, high license comp ...
or X11 license.


Adoption

Besides the
KDE Software Compilation The KDE Software Compilation (KDE SC) was an umbrella term for the desktop environment plus a range of included applications produced by KDE. From its 1.0 release in July 1998 until the release of version 4.4 in February 2010, the Software Comp ...
, there are other adopters such as the
desktop environment In computing, a desktop environment (DE) is an implementation of the desktop metaphor made of a bundle of programs running on top of a computer operating system that share a common graphical user interface (GUI), sometimes described as a graphica ...
s
LXQt LXQt is a free and open source lightweight desktop environment. It was formed from the merger of the LXDE and Razor-qt projects. Like its GTK predecessor LXDE, LXQt does not ship or develop its own window manager, instead LXQt lets the user ...
, MoonLightDE or Hawaii. Version 3.0 of
Krita Krita ( ) is a free and open-source raster graphics editor designed primarily for digital art and 2D animation. The software runs on Windows, macOS, Linux, Android, and ChromeOS, and features an OpenGL-accelerated canvas, colour management sup ...
, the raster graphics editor of the
Calligra Suite Calligra Suite is a graphic art and office suite by KDE. It is available for desktop PCs, tablet computers, and smartphones. It contains applications for word processing, spreadsheets, presentation, databases, vector graphics, and digital paintin ...
, which was released on May 31, 2016, depends on KDE Frameworks 5 and Qt 5.2. With Kirigami, there is also increased usage by applications such as Amarok, Avogadro, Trojitá or Subsurface.


References


External links


KDE Frameworks in KDE's own Gitlab instanceKDE Frameworks in old Phabricator
{{KDE Application programming interfaces C++ libraries Computing platforms Free computer libraries KDE software Unix windowing system-related software X-based libraries Wayland (display server protocol)